package com.demo.tankGame2;

/**
 * @author gy
 * @date 2022/4/24
 */
public class Shot implements Runnable {
    /**
     * 子弹的 x 坐标
     */
    int x;
    /**
     * 子弹的 y 坐标
     */
    int y;
    /**
     * 子弹的 发射方向 0:向上 1:向右 2:向下 3:向左
     */
    int direct = 0;
    /**
     * 子弹的 速度
     */
    int speed = 5;
    /**
     * 子弹是否存活
     */
    boolean isLive = true;

    public Shot(int x, int y, int direct) {
        this.x = x;
        this.y = y;
        this.direct = direct;
    }

    @Override
    public void run() {
        while (true) {
            try {
                System.out.println(Thread.currentThread().getName() + "-线程正在运行中");
                // 休眠50毫秒，不然出不来 子弹移动的效果
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            switch (direct) {
                case 0:
                    // 通过创建线程来使  子弹的坐标一直在变化，
                    // 模拟 子弹移动的效果
                    y -= speed;
                    break;
                case 1:
                    x += speed;
                    break;
                case 2:
                    y += speed;
                    break;
                case 3:
                    x -= speed;
                    break;
                default:
                    System.out.println("方向错误");
            }
            System.out.println("子弹的 x=" + x + "y=" + y);
            // 如果 子弹 到达了边界，就销毁线程（不在指定的范围内）；还有一种情况：撞到了敌人的坦克，暂不讨论
            if (!(x >= 0 && x <= 1000 && y >= 0 && y <= 750)) {
                isLive = false;
                System.out.println(Thread.currentThread().getName() +"-线程退出");
                break;
            }
        }
    }
}
